The present invention relates to the use of secondary pools for storing backup data. More particularly, the present invention relates to generating a secondary pool and transferring data to a secondary pool from another pool of data by a network device responsible for storing backup data.
In order to backup data, data backups are often performed via what is commonly referred to as a “backup application.” In order to backup the data, the backup application sends the data to be stored either to a local storage medium or via a network interface for remote transmission. The amount of data that is stored by the backup application varies with the method implemented by the backup application. For instance, some backup applications backup all data in the specified directory, database or file, while other applications attempt to increase the efficiency of the backup process by storing only the data that has been modified since the last backup. One commonly used method is the fixed position delta reduction method, which determines which fixed position segments of data have been modified since the last backup and stores the data reflecting those changes. In other words, the fixed position delta reduction method determines which segments of data have been modified (e.g., added, modified, or deleted) by comparing one segment of data at a fixed position in a file or data stream received during a current backup with the segment of data previously at that same fixed position in the file or data stream during the last backup for that particular file.
FIG. 1 is a diagram illustrating an exemplary system in which a delta reduction backup application may be implemented. As shown in FIG. 1, a backup client 102 running a client component of a delta reduction backup application sends backup data 104 to a backup server 106 running a server component of a delta reduction backup application. More particularly, when a backup job that defines a set of files to be backed up is executed, a new generation of data is sent to the backup server 106. In other words, each time the same job is executed, a new generation of data is sent to the backup server 106.
The first generation of data for a backup job will typically include all data for all of the files that are being backed up by the backup job. Subsequent generations of data may each include only that data that has been modified since the previous generation of data for that backup job.
When the backup server 106 receives the backup data 104, the backup server 106 may then store the backup data 104. More particularly, the backup server 106 saves each generation of data that is sent by the backup client 102. In this manner, the backup server 106 saves only those blocks of data that have been modified since the previous backup.
A safeset is a full set of data corresponding to all files that are backed up by a backup job. There may be one safeset for each instance of a backup job. For example, if a job were scheduled to backup nightly for five days in a row, there would be five safesets stored by the backup server 106. A generation of data may be defined as a snapshot of a set of data in time. From the safesets of data that are stored by the backup server 106, it is possible to restore those safesets of data to the client at 102 via 108.
In order to store each of the safesets of data, it is possible to store each of the safesets in its entirety. However, a large amount of the data will be common to all of the safesets associated with a particular backup job. As a result, the safesets associated with a particular backup job may be stored in a pool that stores only one physical copy of the common segments of data.
Since a single backup job may be run any number of times over an extended period of time, the pool of data will eventually include data for numerous safesets. Over a long period of time, the size of the storage pool will get large, and the value of the older data for retrievals falls close to zero.
In view of the above, it would be beneficial if an improved mechanism for storing data associated with safesets could be implemented.